import config from '@/config.js' // 配置文件
import errorCode from '@/utils/errorCode'
 
// 需要修改token，和根据实际修改请求头
export default (options = {}) => {
	options.method = options.method || 'GET' // 请求方式
	options.timeout = 10000 // 超时时间
	if(!options.header){
		options.header = {}
	}
	if(options.method == 'POST'){
		options.header['Content-Type'] = 'application/json'
	}
	// 获取本地token
	const token = uni.getStorageSync('mutations_token');
	const isToken = (options.header || {}).isToken === false // 是否需要设置 token
	if (token && !isToken) {
	  options.header['Authorization'] = 'Bearer ' + token
	}
	
	//生产环境
	// #ifdef APP
	options.url = config.base_url + options.url
	// #endif
	// 开发环境，代理
	// #ifndef APP
	options.url = '/dev-api' + options.url
	// #endif
	

	return new Promise((resolve, reject) => {
		const requestTask = uni.request({
			...options,
			success: (res) => {
			  // 未设置状态码则默认成功状态
			  const code = res.data.code || 200
			  // 获取错误信息
			  const msg = errorCode[code] || res.data.msg || errorCode['default']
			  if (code === 401) {
			    uni.clearStorageSync()
				uni.redirectTo({
					url:'/pages/login/index'
				})
			    reject('无效的会话，或者会话已过期，请重新登录。')
			  } else if (code === 500) {
			    uni.showToast({
			      title: msg,
			      icon: 'error',
			      position: 'center'
			    })
			    reject(new Error(msg))
			  } else if (code === 601) {
			    uni.showToast({
			      title: msg,
			      icon: 'error',
			      position: 'center'
			    })
			    reject(new Error(msg))
			  } else if (code !== 200) {
			    uni.showToast({
			      title: msg,
			      icon: 'none',
			      position: 'center'
			    })
			    reject('error')
			  } else {
			     resolve(res.data)
			  }
			},
			fail: (error) => {
			  let { message } = error
			  if (message == 'Network Error') {
			    message = '后端接口连接异常'
			  } else if (message.includes('timeout')) {
			    message = '系统接口请求超时'
			  } else if (message.includes('Request failed with status code')) {
			    message = '系统接口' + message.substr(message.length - 3) + '异常'
			  }
			  uni.showToast({
			    title: message,
			    icon: 'error',
			    position: 'center'
			  })
			  reject(error)
			},
		});
		// requestTask.abort();
	})
};